import axios from 'axios'
import { Message } from 'element-ui'
// 导入token
import store from '@/store/index'
import router from '@/router'
// create an axios instance
// process.env:当前进程的环境变量
const service = axios.create({
  // 请求根路径
  // 相当于写的VUE_APP_BASE_API = '/dev-api'
  // 开发时候 的接口  和上线时候的接口 是不一样的
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // 设置超时 request timeout
})
// 添加请求拦截器
service.interceptors.request.use(function(config) {
  // 在发送请求之前做些什么
  // 如果token前面没有请求人Bearer 这里有空格，就需要拼接请求人
  config.headers.Authorization = 'Bearer ' + store.getters.token
  return config
}, function(error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
// 拦截器
// 添加响应拦截器
service.interceptors.response.use(function(response) {
  // 对响应数据做点什么
  // 第一步；把接收回来的数据剥一层壳
  const data = response.data
  console.log(data)
  // 第二步提示消息
  if (data.success) {
    Message({
      message: data.message,
      type: 'success'
    })
  } else {
    Message.error(data.message)
    return Promise.reject(new Error(data.message))
  }
  return data
}, function(error) {
  if (error.response.status === 401) {
    store.commit('user/removeState')
    router.push('/login')
  }
  // 对响应错误做点什么
  // 当服务器返回的错误信息400,401,500.。都会走响应拦截器的第二个回调函数，代表失败
  // if (error.response.status === 410) {
  //   // 弹出错误信息提示
  //   Message.error(error.response.data.message)
  //   // 清空用户数据(token userinfo)
  //   store.state.user.token = ''
  //   router.push('/')
  //   // 3.跳转到登录页
  //   // console.log(router.push)
  // } else {
  //   // 处理其他内容
  //   console.log(error)
  // }
  return Promise.reject(error)
})
export default service
